博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp中的验证码的实现
阅读量:6675 次
发布时间:2019-06-25

本文共 2256 字,大约阅读时间需要 7 分钟。

1.php端生成验证码函数

public function verify(){        // 验证码        import("@.Util.Image");        Image::buildImageVerify(4,1,'png',40,20,'verify');    }
/**     * 生成图像验证码     * @static     * @access public     * @param string $length  位数     * @param string $mode  类型     * @param string $type 图像格式     * @param string $width  宽度     * @param string $height  高度     * @return string     */    static function buildImageVerify($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify') {        import('ORG.Util.String');        $randval = String::randString($length, $mode);        session($verifyName, md5($randval));        $width = ($length * 10 + 10) > $width ? $length * 10 + 10 : $width;        if ($type != 'gif' && function_exists('imagecreatetruecolor')) {            $im = imagecreatetruecolor($width, $height);        } else {            $im = imagecreate($width, $height);        }        $r = Array(225, 255, 255, 223);        $g = Array(225, 236, 237, 255);        $b = Array(225, 236, 166, 125);        $key = mt_rand(0, 3);        $backColor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]);    //背景色(随机)        $borderColor = imagecolorallocate($im, 100, 100, 100);                    //边框色        imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor);        imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor);        $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));        // 干扰        for ($i = 0; $i < 10; $i++) {            imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $stringColor);        }        for ($i = 0; $i < 25; $i++) {            imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $stringColor);        }        for ($i = 0; $i < $length; $i++) {            imagestring($im, 5, $i * 10 + 5, mt_rand(1, 8), $randval{$i}, $stringColor);        }        Image::output($im, $type);    }

生成图片的同时,传入到session中。

2.页面端

直接src中调用。

点击触发改变。

function changeVerify(){ verifyURL = "{sh::U('Agent/Login/verify')}"; $("#verifyImg").attr("src",verifyURL); return false;}

 

3.后台验证,对比post字段与session中的验证码是否一致。

if($_SESSION['verify'] != md5($_POST['verify'])) {    $this->error('验证码错误!');}

 

转载地址:http://jhrxo.baihongyu.com/

你可能感兴趣的文章
针对于iosAPP内嵌H5,-webit-overflow-scrolling:touch;产生空白情况
查看>>
深入浅出JavaScript运行机制
查看>>
LeetCode 272 Closest Binary Tree Traversal II 解题思路
查看>>
html中表单提交
查看>>
video自动播放 隐藏播放控制条,并且用点击 video 元素的时候 控制暂停和播放...
查看>>
【go密码学】-数字签名
查看>>
代码重构之消除分支结构
查看>>
ingress controller学习记录
查看>>
328. Odd Even Linked List
查看>>
redis学习笔记(三)--Redis的功能
查看>>
NeurIPS 2018 中的贝叶斯研究
查看>>
Android 音视频入门之音频采集、编码、播放
查看>>
python并发模块之concurrent.futures(一)
查看>>
1月10日云栖精选夜读 | 12亿行代码,阿里巴巴这一年的技术报告和梦想报告 ...
查看>>
Spring4定时任务配置
查看>>
iOS-《编写高质量代码》笔记-第一章
查看>>
zimbra管理
查看>>
查看当前Linux系统的发行版本命令详解
查看>>
宜昌保利金盛房地产开发有限公司商业、住宅
查看>>
减少ipdata1的方法
查看>>